nethackfandomcom-20200214-history
Source:NetHack 3.0.0/rm.h
Below is the full text to rm.h from the source code of NetHack 3.0.0. To link to a particular line, write [[NetHack 3.0.0/rm.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)rm.h 3.0 88/10/25 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef RM_H 6. #define RM_H 7. 8. /* 9. * The dungeon presentation graphics code and data structures were rewritten 10. * and generalized for NetHack's release 2 by Eric S. Raymond (eric@snark) 11. * building on Don G. Kneller's MS-DOS implementation. See options.c for 12. * the code that permits the user to set the contents of the symbol structure. 13. */ 14. 15. /* Level location types */ 16. #define STONE 0 17. #define HWALL 1 18. #define VWALL 2 19. #define TLCORNER 3 20. #define TRCORNER 4 21. #define BLCORNER 5 22. #define BRCORNER 6 23. #define CROSSWALL 7 /* For pretty mazes and special levels */ 24. #define TUWALL 8 25. #define TDWALL 9 26. #define TLWALL 10 27. #define TRWALL 11 28. #define SDOOR 12 29. #define SCORR 13 30. #define POOL 14 31. #define MOAT 15 /* pool that doesn't boil, adjust messages */ 32. #define DRAWBRIDGE_UP 16 33. #define DOOR 17 34. #define CORR 18 35. #define ROOM 19 36. #define STAIRS 20 37. #define LADDER 21 38. #define FOUNTAIN 22 39. #define THRONE 23 40. #define SINK 24 41. #define ALTAR 25 42. #define DRAWBRIDGE_DOWN 26 43. 44. /* 45. * Avoid using the level types in inequalities: 46. * these types are subject to change. 47. * Instead, use one of the macros below. 48. */ 49. #define IS_WALL(typ) ((typ) && (typ) <= TRWALL) 50. #define IS_STWALL(typ) ((typ) <= TRWALL) /* STONE <= (typ) <= TRWALL */ 51. #define IS_ROCK(typ) ((typ) < POOL) /* absolutely nonaccessible */ 52. #define IS_DOOR(typ) ((typ) DOOR) 53. #define ACCESSIBLE(typ) ((typ) >= DOOR) /* good position */ 54. #define IS_ROOM(typ) ((typ) >= ROOM) /* ROOM, STAIRS, furniture.. */ 55. #define ZAP_POS(typ) ((typ) >= POOL) 56. #define SPACE_POS(typ) ((typ) > DOOR) 57. #define IS_CORNER(typ) ((typ) >= TLCORNER && (typ) <= BRCORNER) 58. #define IS_T(typ) ((typ) >= CRWALL && (typ) <= TRWALL) 59. #define IS_POOL(typ) ((typ) >= POOL && (typ) <= DRAWBRIDGE_UP) 60. #define IS_THRONE(typ) ((typ) THRONE) 61. #define IS_FOUNTAIN(typ) ((typ) FOUNTAIN) 62. #define IS_SINK(typ) ((typ) SINK) 63. #define IS_ALTAR(typ) ((typ) ALTAR) 64. #define IS_DRAWBRIDGE(typ) ((typ) DRAWBRIDGE_UP || (typ) DRAWBRIDGE_DOWN) 65. #define IS_FURNITURE(typ) ((typ) >= STAIRS && (typ) <= ALTAR) 66. 67. /* 68. * The level-map symbols may be compiled in or defined at initialization time 69. */ 70. 71. /* screen symbols for using character graphics. */ 72. struct symbols { 73. unsigned char stone, vwall, hwall, tlcorn, trcorn, blcorn, brcorn; 74. unsigned char crwall, tuwall, tdwall, tlwall, trwall; 75. unsigned char vbeam, hbeam, lslant, rslant; 76. unsigned char door, room, corr, upstair, dnstair, trap, web; 77. unsigned char pool; 78. unsigned char fountain; 79. unsigned char sink; 80. unsigned char throne; 81. unsigned char altar; 82. unsigned char upladder, dnladder, dbvwall, dbhwall; 83. }; 84. extern struct symbols showsyms; 85. #ifdef REINCARNATION 86. extern struct symbols savesyms; 87. #endif 88. extern const struct symbols defsyms; 89. 90. #define STONE_SYM showsyms.stone 91. #define VWALL_SYM showsyms.vwall 92. #define HWALL_SYM showsyms.hwall 93. #define TLCORN_SYM showsyms.tlcorn 94. #define TRCORN_SYM showsyms.trcorn 95. #define BLCORN_SYM showsyms.blcorn 96. #define BRCORN_SYM showsyms.brcorn 97. #define CRWALL_SYM showsyms.crwall 98. #define TUWALL_SYM showsyms.tuwall 99. #define TDWALL_SYM showsyms.tdwall 100. #define TLWALL_SYM showsyms.tlwall 101. #define TRWALL_SYM showsyms.trwall 102. #define VBEAM_SYM showsyms.vbeam 103. #define HBEAM_SYM showsyms.hbeam 104. #define LSLANT_SYM showsyms.lslant 105. #define RSLANT_SYM showsyms.rslant 106. #define DOOR_SYM showsyms.door 107. #define ROOM_SYM showsyms.room 108. #define CORR_SYM showsyms.corr 109. #define UP_SYM showsyms.upstair 110. #define DN_SYM showsyms.dnstair 111. #define TRAP_SYM showsyms.trap 112. #define WEB_SYM showsyms.web 113. #define POOL_SYM showsyms.pool 114. #define FOUNTAIN_SYM showsyms.fountain 115. #define SINK_SYM showsyms.sink 116. #define THRONE_SYM showsyms.throne 117. #define ALTAR_SYM showsyms.altar 118. #define UPLADDER_SYM showsyms.upladder 119. #define DNLADDER_SYM showsyms.dnladder 120. #define DB_VWALL_SYM showsyms.dbvwall 121. #define DB_HWALL_SYM showsyms.dbhwall 122. 123. #define ERRCHAR ']' 124. 125. #define MAXPCHARS 28 /* maximum number of mapped characters */ 126. 127. /* 128. * The 5 possible states of doors 129. */ 130. 131. #define D_NODOOR 0 132. #define D_BROKEN 1 133. #define D_ISOPEN 2 134. #define D_CLOSED 4 135. #define D_LOCKED 8 136. #define D_TRAPPED 16 137. 138. /* 139. * The 3 possible alignments for altars 140. */ 141. #define A_CHAOS 0 142. #define A_NEUTRAL 1 143. #define A_LAW 2 144. 145. /* 146. * Some altars are considered as shrines, so we need a flag. 147. */ 148. #define A_SHRINE 4 149. 150. /* 151. * Thrones should only be looted once. 152. */ 153. #define T_LOOTED 1 154. 155. /* 156. * The four directions for a DrawBridge. 157. */ 158. #define DB_NORTH 0 159. #define DB_SOUTH 1 160. #define DB_EAST 2 161. #define DB_WEST 4 162. #define DB_DIR 7 /* mask for direction */ 163. 164. /* 165. * What's under a drawbridge. 166. */ 167. #define DB_MOAT 0 168. #define DB_FLOOR 8 169. #define DB_UNDER 8 /* mask for underneath */ 170. 171. /* 172. * Some walls may be non diggable. 173. */ 174. #define W_DIGGABLE 0 175. #define W_NONDIGGABLE 1 176. #define W_GATEWAY 16 /* is a drawbridge wall */ 177. 178. /* 179. * Ladders (in Vlad's tower) may be up or down. 180. */ 181. #define LA_UP 1 182. #define LA_DOWN 2 183. 184. /* 185. * at() display character types, in order of precedence. 186. */ 187. #define AT_APP (uchar)0 188. /* specific overrides */ 189. #define AT_RED (uchar)1 /* flame */ 190. #define AT_BLUE (uchar)4 /* water */ 191. #define AT_WHITE (uchar)7 /* lightning */ 192. /* non-specific */ 193. #define AT_ZAP (uchar)8 194. #define AT_MON (uchar)9 195. #define AT_U AT_MON 196. #define AT_OBJ (uchar)10 197. #define AT_GLD AT_OBJ 198. #define AT_MAP (uchar)11 199. 200. /* 201. * The structure describing a coordinate position. 202. * Before adding fields, remember that this will significantly affect 203. * the size of temporary files and save files. 204. */ 205. struct rm { 206. uchar scrsym; 207. Bitfield(typ,5); 208. Bitfield(new,1); 209. Bitfield(seen,1); 210. Bitfield(lit,1); 211. Bitfield(doormask,5); 212. Bitfield(mmask,1); 213. Bitfield(omask,1); 214. Bitfield(gmask,1); 215. }; 216. 217. #define altarmask doormask 218. #define diggable doormask 219. #define ladder doormask 220. #define drawbridgemask doormask 221. 222. extern struct rm levlCOLNOROWNO; 223. 224. #if defined(DGK) && !defined(TOS) 225. #define ACTIVE 1 226. #define SWAPPED 2 227. 228. struct finfo { 229. int where; 230. long time; 231. long size; 232. }; 233. extern struct finfo fileinfo[]; 234. #define ZFINFO { 0, 0L, 0L } 235. #endif 236. 237. #endif /* RM_H /**/ rm.h